iT邦幫忙

2024 iThome 鐵人賽

DAY 8
0
Software Development

Unity Trick 30 - 提升遊戲開發效率和質感的30個技巧系列 第 8

Unity Trick 8 - 使用代碼自定義 Unity Editor 的介面

  • 分享至 

  • xImage
  •  

Unity Editor 自定義Inspector教學

介紹

Unity的Inspector使用[Serialization Field]
或是宣告Public 變量的時候
會根據變量的類型顯示簡易的操控面板
但如果你想要更複雜的功能(像是加按鈕,表單)
就需要自己自定義Inspector

步驟一:自定義Inspector

  1. 創建MonoBehavior腳本

    using UnityEngine;
    
    public class MyCustomComponent : MonoBehaviour
    {
        public string playerName;
        public int playerScore;
    }
    
  2. 創建Editor腳本
    Assets/Editor文件夾中創建一個新的C#腳本(如果沒有Editor文件夾,請創建一個)。
    這個腳本將用來自定義Inspector:

    using UnityEngine;
    using UnityEditor;
    
    [CustomEditor(typeof(MyCustomComponent))]
    public class MyCustomComponentEditor : Editor
    {
        public override void OnInspectorGUI()
        {
            MyCustomComponent myComponent = (MyCustomComponent)target;
    
            myComponent.playerName = EditorGUILayout.TextField("Player Name", myComponent.playerName);
            myComponent.playerScore = EditorGUILayout.IntField("Player Score", myComponent.playerScore);
    
            if (GUILayout.Button("Reset Score"))
            {
                myComponent.playerScore = 0;
            }
    
            string[] options = new string[] { "Option 1", "Option 2", "Option 3" };
            int index = EditorGUILayout.Popup("Options", 0, options);
    
            // 確保在Inspector中任何更改都能被保存
            if (GUI.changed)
            {
                EditorUtility.SetDirty(myComponent);
            }
        }
    }
    

步驟二:添加按鈕和下拉選單

  • 按鈕:使用GUILayout.Button方法來創建一個按鈕。當按鈕被點擊時,可以執行特定的操作。
  • 下拉選單:使用EditorGUILayout.Popup方法來創建一個下拉選單,讓用戶從多個選項中選擇。

步驟三:擴展Unity Editor功能

除了自定義Inspector,你還可以擴展Unity的Menu和WindowPanel。

  • Menu:你可以在Unity的菜單中添加自定義選項。

    public class MyMenuItems
    {
        [MenuItem("MyMenu/Do Something")]
        private static void DoSomething()
        {
            Debug.Log("Doing something...");
        }
    }
    
  • WindowPanel:創建自定義的編輯器窗口。

    public class MyWindow : EditorWindow
    {
        [MenuItem("Window/My Window")]
        public static void ShowWindow()
        {
            GetWindow<MyWindow>("My Window");
        }
    
        private void OnGUI()
        {
            GUILayout.Label("This is a custom editor window", EditorStyles.boldLabel);
        }
    }
    

結論

通過自定義Inspector、添加按鈕和下拉選單,以及擴展Menu和WindowPanel
可以大大提高Unity Editor的可用性和功能性。


上一篇
Unity Trick 7 - 使用Shapes製作各種各樣的形狀
下一篇
Unity Trick 9 - 使用ADB快速調用Android系統
系列文
Unity Trick 30 - 提升遊戲開發效率和質感的30個技巧9
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言